home *** CD-ROM | disk | FTP | other *** search
- ; Some DOS utilities for Lattice C
- ; Only use with the 'Small model'
-
- include dos.mac
-
- dseg
- public _alloc_tab
-
- alc struc
- d dw (?)
- mb db (?)
- spc db (?)
- nc dw (?)
- sss dw (?)
- alc ends
- _alloc_tab alc <>
- endds
-
- pseg
- public defaultdev, devAlloc, dosVersion
- public rdDevice, wrDevice
-
- defaultdev proc near
- push bp
- mov ah,19h
- int 21h
- mov ah,0
- pop bp
- ret
- defaultdev endp
-
- devAlloc proc near
- push bp
- push ds
- mov dx, _alloc_tab.d
- inc dl ; A=1,...
- mov ah,1ch
- int 21h
- mov ah,ds:[bx]
- pop ds
- mov _alloc_tab.mb, ah
- mov _alloc_tab.spc, al
- mov _alloc_tab.nc, dx
- mov _alloc_tab.sss, cx
- pop bp
- ret
- devAlloc endp
-
- dosVersion proc near
- push bp
- mov ah,30h
- int 21h
- pop bp
- ret
- dosVersion endp
-
- rdDevice proc near
- ; rdDevice(dev, start_sector, number_of_sectors, buffer_address)
- push bp
- mov bp,sp
- mov al,[bp+4] ; device #
- mov dx,[bp+6] ; logical sector number
- mov cx,[bp+8] ; no. sectors
- mov bx,[bp+0ah] ; buffer address
- int 25h
- pop bx ; remove flags
- jc err1
- mov ax,0 ; return 0 for no error
- err1: pop bp
- ret
- rdDevice endp
-
- wrDevice proc near
- ; wrDevice(dev, start_sector, number_of_sectors, buffer_address)
- push bp
- mov bp,sp
- mov al,[bp+4] ; device #
- mov dx,[bp+6] ; logical sector number
- mov cx,[bp+8] ; no. sectors
- mov bx,[bp+0ah] ; buffer address
- int 26h
- pop bx ; remove flags
- jc err2
- mov ax,0 ; return 0 for no error
- err2: pop bp
- ret
- wrDevice endp
- endps
-
- end